package com.demo.framework.db;

import android.content.ContentValues;

import com.demo.framework.db.query.ContentValuesQuery;
import com.demo.framework.db.query.IntegerQuery;
import com.demo.framework.db.query.StringArrayQuery;
import com.demo.framework.db.query.StringQuery;

/**
 * 数据库常量
 */
public class DB {
    /*  */
    /**
     * 数据库数据类型常量 NULL
     */
    static public final int N = 0x00000000;
    
    /**
     * 数据库数据类型常量 INTEGER
     */
    static public final int I = 0x00000001;
    
    /**
     * 数据库数据类型常量 FLOAT
     */
    static public final int F = 0x00000002;
    
    /**
     * 数据库数据类型常量 STRING
     */
    static public final int S = 0x00000003;
    
    /**
     * 数据库数据类型常量 BLOB
     */
    static public final int B = 0x00000004;

    /**
     * 查询结果处理对象，将一条记录转换为String[]。
     */
    static public final QueryResultHandler<String[]> QSTRINGS = new StringArrayQuery();
    
    /**
     * 查询结果处理对象，将一条记录转换为Integer。
     */
    static public final QueryResultHandler<Integer> QINT = new IntegerQuery();
    
    /**
     * 查询结果处理对象，将一条记录转换为String。
     */
    static public final QueryResultHandler<String> QSTRING = new StringQuery();
    
    /**
     * 查询结果处理对象，将一条记录转换ContentValues, 字段都作为String类型。
     */
    static public final QueryResultHandler<ContentValues> CVSTRINGS = ContentValuesQuery.forStrings();
    
    /**
     * 查询结果处理对象，将一条记录转换为ContentValues。
     * @param types 查询结果记录中字段类型
     * @return
     */
    static public QueryResultHandler<ContentValues> CVTYPES(final int... types) {
        return ContentValuesQuery.forTypes(types);
    }
    
    /**
     * 查询结果处理对象，将一条记录转换为ContentValues。结果中前nInt个字段
     * 为INTEGER类型，其余为String类型。
     * @param nInt 结果中INTEGER字段数量
     * @return 
     */
    static public QueryResultHandler<ContentValues> CVINTS(int nInt) {
        return ContentValuesQuery.forInts(nInt);
    }
}
// ----------------------------------END---------------------------------------//